package com.treasure.web.command.request.login;

import com.treasure.common.enums.LoginTypeEnum;
import com.treasure.common.exception.ParameterException;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.util.Objects;
import java.util.regex.Pattern;

/**
 * @author sunhongmin
 * @date 2023/9/1 10:47
 * @description
 */
@Data
public class RegisterRequest implements Serializable {
    /**
     * 手机号
     *
     * @required
     */
    private String phoneNumber;
    /**
     * 企业邀请码
     *
     * @required
     */
    private String invitationCode;
    /**
     * 密码/验证码
     *
     * @required
     */
    private String password;
    /**
     * 确认密码
     * loginType=password时必填
     */
    private String rePassword;

    /**
     * 登录方式
     * code 手机号验证码；password 手机号密码；默认为手机号密码
     */
    private String loginType = LoginTypeEnum.PASSWORD_WORD.getCode();

    public void validate() {
        if (StringUtils.isBlank(phoneNumber)) {
            throw new ParameterException("手机号不能为空");
        }
        if (StringUtils.isBlank(invitationCode)) {
            throw new ParameterException("企业/高校邀请码不能为空");
        }
        if (StringUtils.isBlank(password)) {
            throw new ParameterException("密码/验证码不能为空");
        }
        if (Objects.equals(loginType,LoginTypeEnum.PASSWORD_WORD.getCode()) && StringUtils.isBlank(rePassword)) {
            throw new ParameterException("确认密码不能为空");
        }
        if (Objects.equals(loginType,LoginTypeEnum.PASSWORD_WORD.getCode()) && !Objects.equals(password, rePassword)) {
            throw new ParameterException("密码、确认密码不一致");
        }
//        // 手机号码正则表达式
//        String regex = "^(13\\d|14[5-9]|15[0-35-9]|16[6]|17[0-8]|18\\d|19[89])\\d{8}$";
//        // 使用正则表达式进行匹配
//        if (!Pattern.matches(regex, phoneNumber)) {
//            throw new ParameterException("手机号码格式错误");
//        }
    }
}
